package com.wing.cabinet.model.response;

import com.wing.cabinet.model.entity.StoresRequisitionProduct;
import com.wing.setting.model.entity.SystemRuleInfo;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalDateTime;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.wing.cabinet.model.entity.StoresRequisition;

/**
 * 领新申请表VO
 *
 * @author
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class StoresRequisitionVO {

    /**
     * ID
     */
    private Long id;

    /**
     * 创建时间
     */
    @JsonFormat(timezone = "GMT+8" , pattern = "yyyy-MM-dd HH:mm:ss" )
    private LocalDateTime createTime;

    /**
     * 创建者
     */
    private Long creator;

    /**
     * 修改者
     */
    private Long modifier;

    /**
     * 创建人
     */
    private String creatorName;

    /**
     * 修改人
     */
    private String modifierName;

    /**
     * day
     */
    private Integer day;

    /**
     * no
     */
    private Integer no;

    /**
     * 企业编号
     */
    private String enterpriseCode;

    /**
     * 领新申请编码
     */
    private String code;

    /**
     * 刀柜id
     */
    private Long cabinetId;

    /**
     * 工序id
     */
    private Long processId;

    /**
     * 工单id
     */
    private Long workOrderId;

    /**
     * 领取人id
     */
    private Long userId;

    /**
     * 状态
     */
    private StoresRequisition.Status status;

    /**
    * 状态描述
    */
    @TableField(exist = false)
    private String statusDesc;

    public String getStatusDesc() {
        return status == null ? null : status.getDesc();
    }

    /**
     * 审核状态
     */
    private StoresRequisition.CheckStatus checkStatus;

    /**
    * 审核状态描述
    */
    @TableField(exist = false)
    private String checkStatusDesc;

    public String getCheckStatusDesc() {
        return checkStatus == null ? null : checkStatus.getDesc();
    }

    private Integer checkStatusValue;

    private Integer statusValue;

    /**
     * 审核人
     */
    private String auditPerson;
    /**
     * 指令密码
     */
    private Integer lnstructionCode;
    /**
     * 车间id
     */
    private Long workshopId;

    /**
     * 工单编码
     */
    private String workOrderCode;

    /**
     * 产品数量
     */
    private Long productQuantity;
    /**
     * 货值
     */
    private Long totalPrices;
    /**
     * 刀柜编号
     */
    private String cabinetCode;
    private String startCreateTime;
    private String endCreateTime;
    /**
     * 工序名称
     */
    private String nodeNames;
    /**
     * 部门名称
     */
    private String departmentName;
    /**
     * 岗位名称
     */
    private String roleName;
    /**
     * 手机号
     */
    private String phone;

    /**
     * 设备编号
     */
    private String deviceCode;

    /**
     * 工序名称
     */
    private String processName;

    /**
     * 所属车间
     */
    private String workshopName;

    /**
     * 创建时间
     */
    @JsonFormat(timezone = "GMT+8" , pattern = "yyyy-MM-dd HH:mm:ss" )
    private LocalDateTime auditTime;
    /**
     * 领新产品
     */
    private List<StoresRequisitionProductVO> productList;
    /**
     * 领取人
     */
    private String nickname;
    /**
     * 审核描述
     */
    private String auditRemark;

    private Long businessId;
    /**
     * 搜索内容
     */
    private String searchContent;

    /**
     * 来源 0:小程序 1:柜子面板
     */
    private Integer sourceType;
    /**
     * 工单方式
     */
    private StoresRequisition.WorkOrderWay workOrderWay;
    /**
     * 简版工单id
     */
    private Long simpleWorkOrderId;
    /**
     * 工单方式描述
     */
    @TableField(exist = false)
    private String workOrderWayDesc;

    public String getWorkOrderWayDesc() {
        return workOrderWay == null ? null : workOrderWay.getDesc();
    }

    private String uuid;
    private String uuidReject;

    /**
     * 包装规格
     */
    private String packName;
    /**
     * 数量(包装计)
     */
    private Integer shipmentQuantity;
    /**
     * 包装单位
     */
    private String unitName;
    /**
     * 数量(基础单位计)
     */
    private Integer quantityPack;
    /**
     * 基础单位
     */
    private String basicsUnitName;
}
